package java6703.lesson10;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import java.io.*;
import java.util.Scanner;

//控制器类
public class TextFile6703Controller {

    /*
    实现思路：
    （1）事件：监听三个按钮的单击事件；
    （2）使用FileChooser选择文件，使用FileChooser选择要打开的源文件、要保存到的目标文件；
    （3）复制主要的处理逻辑，对文本文件的按行读写的方式进行复制；
     */

    @FXML
    private Label lblSource;

    @FXML
    private Label lblTarget;

    @FXML
    private TextArea taText;

    //第一个监听事件
    @FXML
    void copyFile(ActionEvent event) {
        taText.clear();
        if (!"".equals(lblSource.getText()) && !"".equals(lblTarget.getText())) {

            //创建源文件
            File sourceFile = new File(lblSource.getText());
            //创建目标文件
            File targetFile = new File(lblTarget.getText());

            try (PrintStream cj = new PrintStream(targetFile)) {
                Scanner in = new Scanner(sourceFile);
                String s;
                while (in.hasNext()) {
                    s = in.nextLine();
                    cj.println(s);
                    taText.appendText(s + "\r\n");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }else {
            //当源文件和目标文件为空时提示信息
            taText.setText("源文件和目标文件不能为空");
        }
    }

    //第二个监听事件
    @FXML
    void selectSource(ActionEvent event) {
        Stage stage = null;

        //创建一个文件选择器
        FileChooser fileChooser = new FileChooser();

        //使用FileChooser选择文件
        fileChooser.setTitle("选择源文件");
        fileChooser.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("Text Files", "*.txt"));
        File selectedFile = fileChooser.showOpenDialog(stage);
        if (selectedFile != null) {
            lblSource.setText(selectedFile.toString());
            taText.clear();
        }else{
            //当源文件不存在时提示信息
            taText.setText("源文件不存在请重新选择文件");
        }
    }

    //第三个监听事件
    @FXML
    void selectTarget(ActionEvent event) {
        Stage stage = null;

        //创建一个文件选择器
        FileChooser fileChooser = new FileChooser();

        //使用FileChooser选择文件
        fileChooser.setTitle("选择目标文件");
        fileChooser.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("Text Files", "*.txt"));
        File selectedFile = fileChooser.showOpenDialog(stage);

        if (selectedFile != null) {
                lblTarget.setText(selectedFile.toString());
                taText.clear();
        }else{
            //当目标文件不存在时提示信息
            taText.setText("目标文件不存在请重新选择文件");
        }
    }

}